Field
This disclosure is generally related to systems for providing efficient databases to programming languages for application development.
Related Art
Database systems, and in particular relational database management systems (RDBMS), are quite commonly used. For current generation programming for the web, the acronym LAMP highlights the interconnected stack of multiple, distinct tools for deploying a meaningful database-driven web application. LAMP refers to Linux, Apache, Mysql, and one of the PHP, Perl or Python programming languages. Integration with the underlying database then is often handled by common libraries such as ODBC and/or object-relational mappers (ORMs) that abstract the underlying (usually SQL) database from the programming language.
Developing applications on this stack is complex and can require multiple tiers of database servers, caches (e.g. memcached), and application servers. In some instances, entire systems of libraries, e.g. Ruby on Rails, or Django on Python, have sprouted up to ease some of the load. Similarly, key-value store systems from Amazon, Google, and/or others are used instead of and/or in addition to more traditional databases to improve read-write times at the expense of losing common database capabilities, e.g. SimpleDB, Google App Engine. This latter trend—whether or not delivered as software as a service (SaaS)—is sometimes referred to as “NoSQL” in deference to the absence of the often ubiquitous SQL language used to query RDBM systems and the differing guarantees such systems offer in comparison to the traditional ACID (atomicity, consistency, isolation, and durability) guarantees, as well as the relational capabilities of an RDBMS.
Most databases use row-oriented storage of data. This provides certain benefits for creation and modification of data, but can be slower for reads. In contrast, other databases use column-oriented storage of data. This can reduce read times, but most traditional column-oriented databases require more write accesses on record creation and modification. See, e.g. “Column-Oriented Database Systems,” Stavros Harizopoulos, Daniel Abadi, and Peter Boncz (Presentation at Very Large Databases (VLDB) 2009, Aug. 24-28, 2009).